using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._LocationReferencingTools._Configuration._LRSEvent
{
    /// <summary>
    /// <para>Configure External Event With LRS</para>
    /// <para>Associates event data stored in an external system with an LRS.</para>
    /// <para>将存储在外部系统中的事件数据与 LRS 相关联。</para>
    /// </summary>    
    [DisplayName("Configure External Event With LRS")]
    public class ConfigureExternalEventWithLRS : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ConfigureExternalEventWithLRS()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_event">
        /// <para>Input Event</para>
        /// <para>The external event feature class or table to be registered to an LRS.</para>
        /// <para>要注册到 LRS 的外部事件要素类或表。</para>
        /// </param>
        /// <param name="_parent_network">
        /// <para>Parent LRS Network</para>
        /// <para>The LRS Network to which the event will be registered.</para>
        /// <para>事件将注册到的 LRS 网络。</para>
        /// </param>
        /// <param name="_event_name">
        /// <para>LRS Event Name</para>
        /// <para>The name of the external event or table that will be registered to the LRS.</para>
        /// <para>将注册到 LRS 的外部事件或表的名称。</para>
        /// </param>
        /// <param name="_event_id_field">
        /// <para>Event ID Field</para>
        /// <para>The event ID field available in the event feature class or table.</para>
        /// <para>事件要素类或表中可用的事件 ID 字段。</para>
        /// </param>
        /// <param name="_route_id_field">
        /// <para>Route ID Field</para>
        /// <para>The name of the route ID field if it is a point event or a line event that does not span routes, or the name of the from route ID field if the event spans routes. The field must be available in the external event table or feature class.</para>
        /// <para>路径 ID 字段的名称（如果是点事件或不跨越路径的线路事件）或从路径 ID 字段的名称（如果事件跨越路径）。该字段必须在外部事件表或要素类中可用。</para>
        /// </param>
        /// <param name="_measure_field">
        /// <para>Measure Field</para>
        /// <para>The name of the measure field if it is a point event or the name of the from measure field if it is a line event.</para>
        /// <para>度量字段的名称（如果是点事件）或从度量字段的名称（如果是线事件）。</para>
        /// </param>
        public ConfigureExternalEventWithLRS(object _in_event, object _parent_network, object _event_name, object _event_id_field, object _route_id_field, object _measure_field)
        {
            this._in_event = _in_event;
            this._parent_network = _parent_network;
            this._event_name = _event_name;
            this._event_id_field = _event_id_field;
            this._route_id_field = _route_id_field;
            this._measure_field = _measure_field;
        }
        public override string ToolboxName => "Location Referencing Tools";

        public override string ToolName => "Configure External Event With LRS";

        public override string CallName => "locref.ConfigureExternalEventWithLRS";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_event, _parent_network, _event_name, _event_id_field, _route_id_field, _measure_field, _geometry_type.GetGPValue(), _to_measure_field, _from_date_field, _to_date_field, _event_spans_routes.GetGPValue(), _to_route_id_field, _store_route_name.GetGPValue(), _route_name_field, _to_route_name_field, _calibrate_rule.GetGPValue(), _retire_rule.GetGPValue(), _extend_rule.GetGPValue(), _reassign_rule.GetGPValue(), _realign_rule.GetGPValue(), _out_external_event_table];

        /// <summary>
        /// <para>Input Event</para>
        /// <para>The external event feature class or table to be registered to an LRS.</para>
        /// <para>要注册到 LRS 的外部事件要素类或表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Event")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_event { get; set; }


        /// <summary>
        /// <para>Parent LRS Network</para>
        /// <para>The LRS Network to which the event will be registered.</para>
        /// <para>事件将注册到的 LRS 网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Parent LRS Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _parent_network { get; set; }


        /// <summary>
        /// <para>LRS Event Name</para>
        /// <para>The name of the external event or table that will be registered to the LRS.</para>
        /// <para>将注册到 LRS 的外部事件或表的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("LRS Event Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _event_name { get; set; }


        /// <summary>
        /// <para>Event ID Field</para>
        /// <para>The event ID field available in the event feature class or table.</para>
        /// <para>事件要素类或表中可用的事件 ID 字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Event ID Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _event_id_field { get; set; }


        /// <summary>
        /// <para>Route ID Field</para>
        /// <para>The name of the route ID field if it is a point event or a line event that does not span routes, or the name of the from route ID field if the event spans routes. The field must be available in the external event table or feature class.</para>
        /// <para>路径 ID 字段的名称（如果是点事件或不跨越路径的线路事件）或从路径 ID 字段的名称（如果事件跨越路径）。该字段必须在外部事件表或要素类中可用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route ID Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _route_id_field { get; set; }


        /// <summary>
        /// <para>Measure Field</para>
        /// <para>The name of the measure field if it is a point event or the name of the from measure field if it is a line event.</para>
        /// <para>度量字段的名称（如果是点事件）或从度量字段的名称（如果是线事件）。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Measure Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _measure_field { get; set; }


        /// <summary>
        /// <para>Geometry Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the geometry type of the external event or table.</para>
        ///   <bulletList>
        ///     <bullet_item>Point— The geometry type of the event will be point. This is the default.</bullet_item><para/>
        ///     <bullet_item>Line— The geometry type of the event will be polyline.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定外部事件或表的几何类型。</para>
        ///   <bulletList>
        ///     <bullet_item>点— 事件的几何类型将为点。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>线 - 事件的几何类型将为折线。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Geometry Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _geometry_type_value _geometry_type { get; set; } = _geometry_type_value._POINT;

        public enum _geometry_type_value
        {
            /// <summary>
            /// <para>Point</para>
            /// <para>Point— The geometry type of the event will be point. This is the default.</para>
            /// <para>点— 事件的几何类型将为点。这是默认设置。</para>
            /// </summary>
            [Description("Point")]
            [GPEnumValue("POINT")]
            _POINT,

            /// <summary>
            /// <para>Line</para>
            /// <para>Line— The geometry type of the event will be polyline.</para>
            /// <para>线 - 事件的几何类型将为折线。</para>
            /// </summary>
            [Description("Line")]
            [GPEnumValue("LINE")]
            _LINE,

        }

        /// <summary>
        /// <para>To Measure Field</para>
        /// <para>The name of the to measure field. A field is only required for line events.</para>
        /// <para>要测量的字段的名称。只有线事件才需要字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("To Measure Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _to_measure_field { get; set; } = null;


        /// <summary>
        /// <para>From Date Field</para>
        /// <para>The from date field in the event feature class or table.</para>
        /// <para>事件要素类或表中的起始日期字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("From Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _from_date_field { get; set; } = null;


        /// <summary>
        /// <para>To Date Field</para>
        /// <para>The to date field in the event feature class or table.</para>
        /// <para>事件要素类或表中的“截至日期”字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("To Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _to_date_field { get; set; } = null;


        /// <summary>
        /// <para>Event Spans Routes</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the event records will span routes.</para>
        ///   <bulletList>
        ///     <bullet_item>As is—The property will not change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Do not span routes—The event records will not span routes. This is applicable to line events only.</bullet_item><para/>
        ///     <bullet_item>Spans routes— The event records will span routes. This is applicable to line events only.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定事件记录是否跨越路由。</para>
        ///   <bulletList>
        ///     <bullet_item>按原样 - 属性不会更改。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>不跨越路径 - 事件记录不会跨越路径。这仅适用于线路事件。</bullet_item><para/>
        ///     <bullet_item>跨路径—事件记录将跨越路径。这仅适用于线路事件。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Event Spans Routes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _event_spans_routes_value _event_spans_routes { get; set; } = _event_spans_routes_value._AS_IS;

        public enum _event_spans_routes_value
        {
            /// <summary>
            /// <para>As is</para>
            /// <para>As is—The property will not change. This is the default.</para>
            /// <para>按原样 - 属性不会更改。这是默认设置。</para>
            /// </summary>
            [Description("As is")]
            [GPEnumValue("AS_IS")]
            _AS_IS,

            /// <summary>
            /// <para>Do not span routes</para>
            /// <para>Do not span routes—The event records will not span routes. This is applicable to line events only.</para>
            /// <para>不跨越路径 - 事件记录不会跨越路径。这仅适用于线路事件。</para>
            /// </summary>
            [Description("Do not span routes")]
            [GPEnumValue("NO_SPANS_ROUTES")]
            _NO_SPANS_ROUTES,

            /// <summary>
            /// <para>Spans routes</para>
            /// <para>Spans routes— The event records will span routes. This is applicable to line events only.</para>
            /// <para>跨路径—事件记录将跨越路径。这仅适用于线路事件。</para>
            /// </summary>
            [Description("Spans routes")]
            [GPEnumValue("SPANS_ROUTES")]
            _SPANS_ROUTES,

        }

        /// <summary>
        /// <para>To Route ID Field</para>
        /// <para>The name of the to route ID field available in the event feature class or table.</para>
        /// <para>事件要素类或表中可用的路径 ID 字段的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("To Route ID Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _to_route_id_field { get; set; } = null;


        /// <summary>
        /// <para>Store Route Name</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the route name will be stored with the event records.</para>
        ///   <bulletList>
        ///     <bullet_item>As is—The property will not change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Do not store route name—The route name will not be stored with the event records.</bullet_item><para/>
        ///     <bullet_item>Store route name—The route name will be stored with the event records.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否将路由名称与事件记录一起存储。</para>
        ///   <bulletList>
        ///     <bullet_item>按原样 - 属性不会更改。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>不存储路径名称 - 路径名称不会与事件记录一起存储。</bullet_item><para/>
        ///     <bullet_item>存储路径名称 - 路径名称将与事件记录一起存储。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Store Route Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _store_route_name_value _store_route_name { get; set; } = _store_route_name_value._AS_IS;

        public enum _store_route_name_value
        {
            /// <summary>
            /// <para>As is</para>
            /// <para>As is—The property will not change. This is the default.</para>
            /// <para>按原样 - 属性不会更改。这是默认设置。</para>
            /// </summary>
            [Description("As is")]
            [GPEnumValue("AS_IS")]
            _AS_IS,

            /// <summary>
            /// <para>Do not store route name</para>
            /// <para>Do not store route name—The route name will not be stored with the event records.</para>
            /// <para>不存储路径名称 - 路径名称不会与事件记录一起存储。</para>
            /// </summary>
            [Description("Do not store route name")]
            [GPEnumValue("NO_STORE_ROUTE_NAME")]
            _NO_STORE_ROUTE_NAME,

            /// <summary>
            /// <para>Store route name</para>
            /// <para>Store route name—The route name will be stored with the event records.</para>
            /// <para>存储路径名称 - 路径名称将与事件记录一起存储。</para>
            /// </summary>
            [Description("Store route name")]
            [GPEnumValue("STORE_ROUTE_NAME")]
            _STORE_ROUTE_NAME,

        }

        /// <summary>
        /// <para>Route Name Field</para>
        /// <para>The route name field if it is a point event or line event that does not span routes, or the name of the from route name field if the event spans routes. The field must be available in the external event table or feature class.</para>
        /// <para>如果是不跨越路径的点事件或线事件，则为路径名称字段，如果事件跨越路径，则为从路径名称字段的名称。该字段必须在外部事件表或要素类中可用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Name Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _route_name_field { get; set; } = null;


        /// <summary>
        /// <para>To Route Name Field</para>
        /// <para>The to route name field for line events that span routes. This parameter is required if the Store Route Name and Event Spans Routes parameters are set.</para>
        /// <para>跨路由的线事件的 to route name 字段。如果设置了“存储路由名称”和“事件跨度路由”参数，则此参数是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("To Route Name Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _to_route_name_field { get; set; } = null;


        /// <summary>
        /// <para>Calibrate Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule for the calibrate activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire—Both measure and geographic location will be preserved; the event will be retired.</bullet_item><para/>
        ///     <bullet_item>Move—The measures of the event will be preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定校准活动的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 将保留度量和地理位置;该活动将停用。</bullet_item><para/>
        ///     <bullet_item>移动—将保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Calibrate Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _calibrate_rule_value _calibrate_rule { get; set; } = _calibrate_rule_value._STAY_PUT;

        public enum _calibrate_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</para>
            /// <para>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire—Both measure and geographic location will be preserved; the event will be retired.</para>
            /// <para>停用 - 将保留度量和地理位置;该活动将停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move—The measures of the event will be preserved; the geographic location may change.</para>
            /// <para>移动—将保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Retire Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule for the retire activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire— Both measure and geographic location will be preserved; the event will be retired.</bullet_item><para/>
        ///     <bullet_item>Move— The measures of the event will be preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定停用活动的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 度量值和地理位置都将保留;该活动将停用。</bullet_item><para/>
        ///     <bullet_item>移动 — 将保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Retire Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _retire_rule_value _retire_rule { get; set; } = _retire_rule_value._STAY_PUT;

        public enum _retire_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</para>
            /// <para>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire— Both measure and geographic location will be preserved; the event will be retired.</para>
            /// <para>停用 - 度量值和地理位置都将保留;该活动将停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move— The measures of the event will be preserved; the geographic location may change.</para>
            /// <para>移动 — 将保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Extend Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule for the extend activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire— Both measure and geographic location will be preserved; the event will be retired.</bullet_item><para/>
        ///     <bullet_item>Move— The measures of the event will be preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定扩展活动的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 度量值和地理位置都将保留;该活动将停用。</bullet_item><para/>
        ///     <bullet_item>移动 — 将保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Extend Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _extend_rule_value _extend_rule { get; set; } = _extend_rule_value._STAY_PUT;

        public enum _extend_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</para>
            /// <para>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire— Both measure and geographic location will be preserved; the event will be retired.</para>
            /// <para>停用 - 度量值和地理位置都将保留;该活动将停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move— The measures of the event will be preserved; the geographic location may change.</para>
            /// <para>移动 — 将保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Reassign Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule for the reassign activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire— Both measure and geographic location will be preserved; the event will be retired.</bullet_item><para/>
        ///     <bullet_item>Move— The measures of the event will be preserved; the geographic location may change.</bullet_item><para/>
        ///     <bullet_item>Snap— The geographic location of the event will be preserved by snapping the event to a concurrent route; measures may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定重新分配活动的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 度量值和地理位置都将保留;该活动将停用。</bullet_item><para/>
        ///     <bullet_item>移动 — 将保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///     <bullet_item>捕捉 — 通过将事件捕捉到并发路由来保留事件的地理位置;措施可能会改变。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Reassign Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _reassign_rule_value _reassign_rule { get; set; } = _reassign_rule_value._STAY_PUT;

        public enum _reassign_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</para>
            /// <para>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire— Both measure and geographic location will be preserved; the event will be retired.</para>
            /// <para>停用 - 度量值和地理位置都将保留;该活动将停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move— The measures of the event will be preserved; the geographic location may change.</para>
            /// <para>移动 — 将保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

            /// <summary>
            /// <para>Snap</para>
            /// <para>Snap— The geographic location of the event will be preserved by snapping the event to a concurrent route; measures may change.</para>
            /// <para>捕捉 — 通过将事件捕捉到并发路由来保留事件的地理位置;措施可能会改变。</para>
            /// </summary>
            [Description("Snap")]
            [GPEnumValue("SNAP")]
            _SNAP,

        }

        /// <summary>
        /// <para>Realign Rule</para>
        /// <para><xdoc>
        ///   <para>Specifies the event behavior rule for the realign activity.</para>
        ///   <bulletList>
        ///     <bullet_item>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</bullet_item><para/>
        ///     <bullet_item>Retire— Both measure and geographic location will be preserved; the event will be retired.</bullet_item><para/>
        ///     <bullet_item>Move— The measures of the event will be preserved; the geographic location may change.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定重新对齐活动的事件行为规则。</para>
        ///   <bulletList>
        ///     <bullet_item>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>停用 - 度量值和地理位置都将保留;该活动将停用。</bullet_item><para/>
        ///     <bullet_item>移动 — 将保留事件的度量;地理位置可能会发生变化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Realign Rule")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _realign_rule_value _realign_rule { get; set; } = _realign_rule_value._STAY_PUT;

        public enum _realign_rule_value
        {
            /// <summary>
            /// <para>Stay put</para>
            /// <para>Stay put— The geographic location of the event will be preserved; measures may change. This is the default.</para>
            /// <para>保持原地 — 事件的地理位置将被保留;措施可能会改变。这是默认设置。</para>
            /// </summary>
            [Description("Stay put")]
            [GPEnumValue("STAY_PUT")]
            _STAY_PUT,

            /// <summary>
            /// <para>Retire</para>
            /// <para>Retire— Both measure and geographic location will be preserved; the event will be retired.</para>
            /// <para>停用 - 度量值和地理位置都将保留;该活动将停用。</para>
            /// </summary>
            [Description("Retire")]
            [GPEnumValue("RETIRE")]
            _RETIRE,

            /// <summary>
            /// <para>Move</para>
            /// <para>Move— The measures of the event will be preserved; the geographic location may change.</para>
            /// <para>移动 — 将保留事件的度量;地理位置可能会发生变化。</para>
            /// </summary>
            [Description("Move")]
            [GPEnumValue("MOVE")]
            _MOVE,

        }

        /// <summary>
        /// <para>Output External Event Table</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output External Event Table")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_external_event_table { get; set; }


        public ConfigureExternalEventWithLRS SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}